import Vue from 'vue';
import Qs from 'qs';

/**
 * 封装get方法
 * @param url
 * @param data
 * @returns {Promise}
 */

export function get(url, params = {}, responseType = "") {
    return new Promise((resolve, reject) => {
        Vue.axios.get(url, {
                params: params,
                responseType: responseType
            })
            .then(response => {
                resolve(response.data);
            })
            .catch(err => {
                reject(err)
            })
    })
}


/**
 * 封装post请求
 *
 * 使用axios进行post的时候出现错误，显示参数为null，
 * 查了资料才知道，大多数的web服务器只能识别form的post的请求，
 * 即请求头Content-Type为’application/x-www-form-urlencoded‘
 *
 * @param url
 * @param data
 * @returns {Promise}
 */
export function post(url, data = {}, headers = { 'Content-Type': 'application/x-www-form-urlencoded' }) {
    return new Promise((resolve, reject) => {
        /* axios 使用 post 发送数据时，默认是直接把 json 放到请求体中提交到后端的 */
        /*for(let key in headers) {
            Vue.axios.defaults.headers[key] = headers[key];
        }*/

        //console.log(JSON.stringify(Vue.axios.defaults.headers));
        Vue.axios({
                url: url, //测试地址
                method: 'POST',
                headers: headers,
                data: Qs.stringify(data), //post方式必须是data参数而不是params
                responseType: 'json'
            })
            .then(response => {
                /* 因为在响应拦截器中已经处理了isOK为false的情况，如果在拦截器中直接return，会导致这里的response为undefined */
                if(response != undefined) {
                    resolve(response.data);
                }
            }, err => {
                /* 超时会调用这里 */
                reject(err);
            })
    })
}